package com.byapp.fast.modules.match.service;

import com.baomidou.mybatisplus.service.IService;
import com.byapp.fast.modules.match.dto.*;
import com.byapp.fast.modules.match.entity.MatchExtEntity;
import com.byapp.fast.modules.match.entity.MatchOddsEntity;
import com.byapp.fast.modules.match.entity.MatchRefEntity;

import java.util.List;
import java.util.Map;

public interface MatchService extends IService<MatchRefEntity> {

    /**
     * 根据赛事ID查询赛事信息
     */
    MatchRefEntity queryById(String matchId);

    /**
     * 查询赛事日期分组数据
     */
    List<MatchDateDTO> queryMatchDateGroup();

    /**
     * 查询联赛分组数据
     */
    List<MatchLeagueDTO> queryMatchLeagueGroup();

    /**
     * 根据赛事时间获取赛事列表数据
     */
    List<MatchDetailDTO> queryMatchDateList(String matchTime);

    /**
     * 根据联赛ID获取赛事列表数据
     */
    List<MatchDetailDTO> queryMatchLeagueList(String leagueId);

    /**
     * 根据赛事ID查询单场赛事及赔率盘口数据
     */
    List<MatchBetDTO> queryMatchOddsList(String matchId);

    /**
     * 根据赛事ID查询赛事扩展信息(包含赛事封盘状态)
     */
    MatchExtEntity queryMatchExt(String matchId);

    /**
     * 新增或修改赛事赔率
     */
    void updateMatchOdds(MatchMsgEventDTO matchMsgEventDTO);

    /**
     * 根据oddsId和type获取下单时赔率
     * type 3：胜、1：平、0：负
     */
    String queryOdds(String oddsId, String type);

    /**
     * 赛事是否开始 true：开始、false：未开始
     */
    boolean isMatchStarted(String matchId);

    /**
     * 赛事是否开盘 true：开盘、false：封盘
     */
    boolean isMatchBetEnabled(String matchId);

    /**
     * 玩法是否开盘 true：开盘、false：封盘
     */
    boolean isPlayBetEnabled(Map<String, Object> map);

    /**
     * 赔率/盘口是否变化 true：未变化、false：已变化
     */
    boolean isOriginOddsAndHandicap(Map<String, Object> map);

    /**
     * 查询MatchOddsEntity对象
     */
    MatchOddsEntity queryMatchOdds(Map<String, Object> map);

    /**
     * 通过hash查询MatchOddsEntity对象
     */
    MatchOddsEntity queryMatchOdds(String oddsId);

}
